package com.kmxd.ams.core.util;

import cn.hutool.core.io.IoUtil;
import cn.hutool.crypto.SmUtil;
import java.io.File;
import java.nio.charset.StandardCharsets;
import java.util.List;
import org.apache.commons.compress.utils.Lists;
import org.springframework.util.DigestUtils;

/**
 * 获取文件md5方法
 *
 * @author zuolg
 */
public class SecureUtils {

  /**
   * 获取md5加密结果及gm
   *
   * @param file
   * @return
   */
  public static List<String> hexs(File file) {
    List<String> datas = Lists.newArrayList();
    String md5 = null;
    try {
      md5 = DigestUtils.md5DigestAsHex(IoUtil.toStream(file));
    } catch (Exception ex) {
      ex.printStackTrace();
    }
    String sm3 = SmUtil.sm3(file);
    datas.add(md5.toLowerCase());
    datas.add(sm3.toLowerCase());
    return datas;
  }

  /**
   * sm3国密
   *
   * @param file
   * @return
   */
  public static String sm3(File file) {
    return SmUtil.sm3(file);
  }

  /**
   * 获取md5方法
   *
   * @param file
   * @return
   */
  public static String md5(File file) {
    String md5 = null;
    try {
      md5 = DigestUtils.md5DigestAsHex(IoUtil.toStream(file));
    } catch (Exception ex) {
      ex.printStackTrace();
    }
    return md5;
  }

  /**
   * 获取字符串md5
   *
   * @param str
   * @return
   */
  public static String md5(String str) {
    String md5 = null;
    try {
      md5 = DigestUtils.md5DigestAsHex(str.getBytes(StandardCharsets.UTF_8));
    } catch (Exception ex) {
      ex.printStackTrace();
    }
    return md5;
  }
}
